#全国疫情可视化-地图

"""
全国疫情可视化

"""
import  json
from  pyecharts.charts import Map
from pyecharts.options import *
from pyecharts_test.file import path_contant


def province(pro):
    provinces = ["北京市", "天津市", "河北省", "山西省", "内蒙古自治区", "辽宁省", "吉林省", "黑龙江省", "上海市",
                 "江苏省", "浙江省", "安徽省", "福建省", "江西省",
                 "山东省", "河南省", "湖北省", "湖南省", "广东省", "广西壮族自治区", "海南省", "重庆市", "四川省",
                 "贵州省", "云南省", "西藏自治区", "陕西省", "甘肃省",
                 "青海省", "宁夏回族自治区", "新疆维吾尔自治区", "台湾省", "香港特别行政区", "澳门特别行政区"]

    for p in provinces:
        # 如果pro 在p里面 则返回p
        if pro in p:
            return p


# 读取数据文件
path=path_contant.epidemic
f=open(path,'r',encoding="UTF-8")
data=f.read()# 读取全部数据
print(data)
# 关闭文件
f.close()

#取到各省数据 将字符串json转换为python字典
data_dict=json.loads(data)

#从字典中取出更省份的数据
province_data_list=data_dict['areaTree'][0]['children']
# 组装每个省份和确诊人数为元组，并各个省的数据都封装如列表中
data_list=[] # 绘图的时候使用
for province_data in province_data_list:
    province_name=province(province_data['name']) # 省份名称
    province_confirm=province_data['total']['confirm'] # 确诊人数
    data_list.append((province_name,province_confirm))

print(data_list)

# 创建地图
map=Map()
# 添加数据
map.add("各省份确诊人数",data_list,"china")
# 设置全局配置 定制分段视觉映射
map.set_global_opts(
    title_opts=TitleOpts(title="全国疫情地图"), # 设置标题
    # 设置视图
    visualmap_opts=VisualMapOpts(
        is_show=True,  # 是否显示
        is_piecewise=True, # 是否分段
        pieces=[
            {"min":1,"max":99,"label":"1~99人","color":"#CCFFFF"},
            {"min": 100, "max": 999, "lable": "100~9999人", "color": "#FFFF99"},
            {"min": 1000, "max": 4999, "lable": "1000~4999人", "color": "#FF9966"},
            {"min": 5000, "max": 9999, "lable": "5000~99999人", "color": "#FF6666"},
            {"min": 10000, "max": 99999, "lable": "10000~99999人", "color": "#CC3333"},
            {"min": 100000, "lable": "100000+", "color": "#990033"}
        ]
    )
)

# 绘图
path= "/02_pyecharts_test/html/全国疫情地图.html"
map.render(path=path)